package com.library.mapper;

import com.library.entity.Book;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
import java.util.Map;

/**
 * 图书数据访问层接口，定义图书的CRUD操作
 */
@Mapper
public interface BookMapper {

    /**
     * 新增图书
     * @param book 图书实体对象
     * @return 受影响的行数（1表示成功，0表示失败）
     */
    int insert(Book book);

    /**
     * 更新图书信息
     * @param book 包含更新信息的图书实体
     * @return 受影响的行数（1表示成功，0表示失败）
     */
    int update(Book book);

    /**
     * 根据ID删除图书
     * @param id 图书ID
     * @return 受影响的行数（1表示成功，0表示失败）
     */
    int deleteById(Long id);

    /**
     * 根据ID查询图书
     * @param id 图书ID
     * @return 图书实体对象，若不存在则返回null
     */
    Book selectById(Long id);

    /**
     * 按条件查询图书（支持多条件组合查询）
     * @param condition 包含查询条件的Map集合
     *                  支持的键：title(书名)、author(作者)、isbn(ISBN编号)
     * @return 符合条件的图书列表
     */
    List<Book> selectByCondition(Map<String, Object> condition);

    /**
     * 查询所有图书
     * @return 所有图书的列表
     */
    List<Book> selectAll();
}
